Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to non-volatile storage devices. In typical operation, the storage processors service storage requests that arrive from users. The storage requests specify data elements to be written, read, created, or deleted, for example. The storage processors each may run software that manages incoming storage requests and performs various data processing tasks to organize and secure user data stored on the non-volatile storage devices.
Some data storage systems take the form of file-based systems, such as NAS (network-attached storage) systems. Such systems communicate with users of host computing devices (“hosts”) using one or more file-based protocols, such as NFS (Network File System), CIFS (Common Internet File System), and/or SMB 3.0 (server message block), for example. File-based systems allow users to create and store file systems, and to export those file systems for access over a computer network. File-based systems typically provide advanced features, such as replication and snap, for protecting data and for allowing hosts to roll back their data to earlier points in time. These advanced features may be operated at the file system level, such that users may specify and direct performance of replication and snap operations on individual file systems.
Other data storage systems take the form of block-based arrays. Such arrays communicate with hosts using one or more block-based protocols, such as Fibre Channel, iSCSI, and/or InifiniBand, for example. In some examples, block-based arrays include multiple disk drives, electronic flash drives, and the like, and allow hosts to provision logical storage volumes from such drives. The arrays may export such volumes, called logical unit numbers, or “LUNs,” to hosts using one or more of the above protocols, or some other protocol. Hosts may then access data on LUNs, e.g., for reading or writing, by specifying the particular LUN and a block offset range relative to the LUN. Arrays may also provide advanced features, such as replication and snap, for example, which operate at the level of individual LUNs.
In some arrangements, a file-based system provides a front end and connects to a block-based array, which operates as a back end. Hosts access one or more storage processors in the file-based system using a file-based protocol, and the file-based system accesses the array using a block-based protocol. Thus, the file-based system services requests from hosts while the block-based array efficiently stores host data.